package com.zmn.plat.persistence.interfaces.product.tariff.group;

import com.zmn.plat.model.entity.product.tariff.group.ProductTariffGroup;
import com.zmn.plat.model.entity.product.tariff.group.ProductTariffGroupQuery;
import com.zmn.plat.model.vo.product.tariff.group.ProductTariffGroupVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 产品故障分组表，从故障分组中选择
 *
 * @author tanbiao
 * @since 2019-11-21 18:57:46
 */
public interface ProductTariffGroupDao {

    /**
     * 查询
     *
     * @param relateId ID
     * @return
     */
    ProductTariffGroup findByKey(Integer relateId);

    /**
     * 分页搜索
     *
     * @param query 条件
     * @return 列表
     */
    List<ProductTariffGroup> listPageByQuery(ProductTariffGroupQuery query);

    /**
     * 搜索
     *
     * @param query 条件
     * @return
     */
    List<ProductTariffGroupVO> listByQuery(ProductTariffGroupQuery query);

    /**
     * 所有数据
     *
     * @return
     */
    List<ProductTariffGroup> listAll();

    /**
     *根据服务分类查询所有数据
     *
     * @return
     */
    List<ProductTariffGroup> listByGroupIds(@Param("faultGroupIds") List<Integer> faultGroupIds);

    /**
     * 统计
     *
     * @param query 条件
     * @return
     */
    Integer countByQuery(ProductTariffGroupQuery query);

    /**
     * 更新
     *
     * @param productFaultGroup
     * @return
     */
    Integer updateByKey(ProductTariffGroup productFaultGroup);

    /**
     * 插入
     *
     * @param productFaultGroup
     * @return
     */
    Integer insert(ProductTariffGroup productFaultGroup);

    /**
     * 批量插入
     *
     * @param productFaultGroupList
     * @return
     */
    Integer insertBatch(@Param("productFaultGroupList") List<ProductTariffGroup> productFaultGroupList);

    /**
     * 删除
     *
     * @param relateId ID
     * @return
     */
    Integer deleteByKey(Integer relateId);

    /**
     * 根据产品ID和价格表ID删除故障组关联关系
     * @param productId
     * @param tariffId
     * @return
     */
    Integer deleteByProductIdAndTariffId(@Param("productId")Integer productId, @Param("tariffId")Integer tariffId);
    /**
     * 根据服务分组批量删除数据
     * @param groupIds
     * @return
     */
    Integer deleteByGroupIds(@Param("groupIds") List<Integer> groupIds);
}
